package com.zmn.oms.dubbo.dto.zmn.order.shop;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 类描述：计算订单金额
 *
 * @author heciqi
 * @date 2020/6/5 11:59
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CalcOrderAmountDIO implements Serializable {
	/**
	 * 渠道ID (必填)
	 */
	@NotNull(message = "channelId can not be empty")
	private Integer channelId;

	/**
	 * 城市ID(必填)
	 */
	@NotNull(message = "cityId can not be empty")
	private Integer cityId;

	/**
	 * 前台产品Id(必填)
	 */
	@NotNull(message = "showProductId can not be empty")
	private Integer showProductId;

	/**
	 * 用户id(必填)
	 */
	@NotNull(message = "userId can not be empty")
	private Long userId;

	/**
	 * 产品数量
	 */
	private Integer number;

	/**
	 * 促销id
	 */
	private Integer promId;

	/**
	 * 店铺下单，优惠券码
	 */
	private List<String> discountItemCodes;

	/**
	 * 服务项类型，目前仅支持两种类型： 1.非计价器订单 2.计价器订单
	 * 若值不等于2，则均作为值等于1处理
	 */
	@NotNull(message = "servItemType can not be empty")
	private Integer servItemType;

	/**
	 * 调用发起者，1系统，2用户
	 */
	@NotNull(message = "调用者 不能为null")
	private Integer invoker;

	/**
	 * 订单下单时间
	 */
	private Date receiveTime;
}
